/**
 * Copyright 2023 Inc.
 **/
package com.myz.java.study.base.scanner;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * next()：
 * 1、一定要读取到有效字符后才可以结束输入。
 * 2、自动将其去掉输入的空白。
 * 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next() 不能得到带有空格的字符串。读取输入后将光标放在同一行？？？
 * <p>
 * nextLine():
 * 1、以Enter为结束符，返回的是输入回车之前的所有字符
 * 2、可以获得空白
 * <p>
 * 建议：需要拿到int类型就使用nextInt()。需要拿到String类型就使用next()，这样也可以通过包装类Integer.parseInt(" ")等转为你需要的类型。
 *
 * @author maoyz0621 on 2023/8/28
 * @version v1.0
 */
public class ScannerTest {

    private static final Logger LOGGER = LoggerFactory.getLogger(ScannerTest.class);

    public static void main(String[] args) {
        // main0();
        main2();
        // main3();
    }

    static void main0() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String s = scanner.next();
            LOGGER.info("nextLine={}", s);
            int anInt = scanner.nextInt();
            LOGGER.info("int={}", anInt);
            String s1 = scanner.nextLine();
            if (StringUtils.isEmpty(s1)) {
                break;
            }
        }
        System.out.println("*******************");
        scanner.close();
    }

    static void main1() {
        Scanner scanner = new Scanner(System.in);
        List<Object> list = new ArrayList<>();
        while (scanner.hasNextInt()) {
            // 逐个读取
            list.add(scanner.nextInt());
        }
        LOGGER.info("list={}", list);
        scanner.close();
    }

    static void main2() {
        Scanner scanner = new Scanner(System.in);
        int anInt = scanner.nextInt();
        LOGGER.info("anInt={}", anInt);
        String nextLine;
        while (scanner.hasNextLine()) {
            nextLine = scanner.nextLine();
            // 跳出空格
            if (StringUtils.isEmpty(nextLine)) {
                continue;
            }
            // 全部读取
            String trim = nextLine.trim();
            // 空格或换行，回车
            String[] split = trim.split("\\s+");
            LOGGER.info("split={}", Arrays.toString(split));
        }
        scanner.close();
    }
}